<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <p>123</p>
  <script>
    // 我们可以通过 try/catch 捕获错误信息（浏览器提供的错误信息） 利用catch（自定义）的参数调用错误信息
    // 3个关键字：try试试  catch拦住  finally最后

    // 总结：
    // 1.try...catch 用于捕获错误信息
    // 2.将预估可能发生错误的代码写在 try 代码段中
    // 3.如果 try 代码段中出现错误后，会执行 catch 代码段，并截获到错误信息
    // 4.finally 不管是否有错误，都会执行

    function fn() {
      try {
        // 可能发生错误的代码，要写到try里面
        const p = document.querySelector('.p')
        p.style.color = 'red'
      } catch (err) {
        // 拦截错误，提示浏览器提供的错误信息，但是不中断程序的执行
        console.log(err.message)
        // 需要加return 中断程序， 麻烦 不如直接用throw（可以中断程序）抛出
        // return
        throw new Error('你看看，选择器错误了吧!')  // 可以中断程序
      }
      finally {
        // 不管你程序对不对，一定会执行的代码     有些代码在程序中是一定要执行的，就放在 finally 这里
        alert('不管程序有没有错误，我一定会执行！')
      }
      console.log('我被打印出来了，说明程序没有错')
    }
    fn()
  </script>
</body>

</html>